package interfaces;

import java.util.LinkedList;

import mail.Mail;

public interface ModelEmail {

	/**
	 * ruft alle x sekunden listInbox auf
	 */
	public void updateInbox();

	/**
	 * oeffnet "NeueEmail" Fesnter
	 */
	public void newMail();

	/**
	 * sendet Email ab
	 * 
	 * @param owner
	 *            Besitzer des Email Accounts, dieser Besitzt Email, Passwort,
	 *            Serveradresse
	 * @param mail
	 *            Email die gesendet werden soll, diese enthaelt Empfaenger,
	 *            Betreff, Inhalt
	 */
	public void sendMail(Mail mail, Boolean b);

	/**
	 * Gibt Liste der Mails im Inbox Ordner zurueck mit Absender Betreff
	 * 
	 * @param owner
	 *            Besitzer des Postfaches. Der Besitzer muss ueber die
	 *            Einstellungen Email, Passwort, Server und Provider verfuegen
	 * 
	 * @return Gibt Liste mit allen Emails vom Server zurueck
	 */
	public LinkedList<Mail> listInbox();

	/**
	 * Email muss vom Server und aus der liste geloescht werden
	 * 
	 * @param owner
	 *            Besitzer wird uebergeben um zu wissen wessen Emails durchsucht
	 *            werden sollen
	 * @param mail
	 *            Mail die geloescht werden soll
	 */
	public void deleteMail(Mail mail);

	/**
	 * oeffnet das "Neue Email" Fenster, mit "An" gesetzt, mit Absender der
	 * ausgewaehlten eMail und Betreff ist "Re:  + Betreff der gewaehlten eMail"
	 * und Text der alten Email
	 * 
	 * @param mail
	 *            mail auf die geantwortet wird, dadurch werden Betreff, An und
	 *            Inhalt der uebergebenen Mail uebernommen
	 */
	public void answerMail(Mail mail);

	/**
	 * wie answer Mail + "An" gefuellt mit allen empfaengern und sendern
	 */
	public void answerAllMail(Mail mail);

	/**
	 * Email weiterleiten, d.h. "Neue Email" Fesnter oeffnet sich, Text der
	 * gewaehlten Mail wird uebernommen, Betreff erhaelt FWD
	 */
	public void forwMail(Mail mail);

}
